const install = (Vue, vm) => {
	Vue.prototype.$u.http.setConfig({
		baseUrl: 'https://api.shop.eduwork.cn', // 请求的本域名
		dataType: 'json',
		showLoading: true, // 是否显示请求中的loading
		loadingText: '请求中...', // 请求loading中的文字提示
		loadingTime: 800, // 在此时间内，请求还没回来的话，就显示加载中动画，单位ms
		originalData: true, // 是否在拦截器中返回服务端的原始数据
		loadingMask: true, // 展示loading的时候，是否给一个透明的蒙层，防止触摸穿透
	
	});
	// 请求拦截，配置Token等参数
	Vue.prototype.$u.http.interceptor.request = (config) => {
		config.header.Authorization="Bearer "+ vm.vuex_token
		return config;
	}

	// 响应拦截，判断状态码是否通过
	Vue.prototype.$u.http.interceptor.response = (res) => {
		// console.log(res, 'res')
		// return res
		// 响应状态码 
		const {statusCode, data} = res
		if (statusCode < 400) {
			return data;
		} else if (statusCode == 400) {
			// 错误的请求
			// console.log(res, '看错误信息在哪')
			vm.$u.toast(data.message);
			// return false;
		} else if (statusCode == 401) {
			// 401的情况有两种 一种是认证未通过；一种是没有token或者过期
			if(data.message == "Unauthorized"){
				vm.$u.toast('账号或密码错误');
			}else{
				vm.$u.utils.isLogin()
			
			}
			return false;
		}else if (statusCode == 422) {
			// 表单验证未通过
			const {errors} = data
			// console.log(Object.values(errors)[0][0])
			vm.$u.toast(Object.values(errors)[0][0]);
			// return false;
		} else {
			// 如果返回false，则会调用Promise的reject回调，
			// 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中，res为服务端的返回值
			return false;
		}
	}
	// 增加patch请求 params：一些参数
	// vm.$u.patch = (url,params={},header={}) => {
	// 	// 模拟patch请求
	// 	const _params = {
	// 		...params,
	// 		_methods: 'PATCH'
	// 	}
	// 	return vm.$u.get(url,_params,header)
	// }
	// 增加patch请求
	vm.$u.patch = (url, params = {}, header = {}) => {
		// 模拟patch请求
		const _params = {
			...params,
			_method: 'PATCH'
		}
		return vm.$u.post(url, _params, header)
	}
}

export default {
	install
}
